From a6ecb70b14643705b9015af896f55020438da92a Mon Sep 17 00:00:00 2001 From: Kristian Rietveld Date: Wed, 13 Jul 2005 23:05:27 +0000 Subject: [PATCH] new function. (fixes #105252, suggestion from Mikael Hallendal). 2005-07-14 Kristian Rietveld * gtk/gtktreeview.[ch] (gtk_tree_view_get_visible_range): new function. (fixes #105252, suggestion from Mikael Hallendal). --- ChangeLog | 5 +++++ ChangeLog.pre-2-10 | 5 +++++ ChangeLog.pre-2-8 | 5 +++++ gtk/gtktreeview.c | 47 ++++++++++++++++++++++++++++++++++++++++++++++ gtk/gtktreeview.h | 3 +++ 5 files changed, 65 insertions(+) diff --git a/ChangeLog b/ChangeLog index fccb2e8405..c0ce3a1e10 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-07-14 Kristian Rietveld + + * gtk/gtktreeview.[ch] (gtk_tree_view_get_visible_range): new + function. (fixes #105252, suggestion from Mikael Hallendal). + 2005-07-13 Manish Singh * demos/gtk-demo/iconview_edit.c: remove unused variable. diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index fccb2e8405..c0ce3a1e10 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,8 @@ +2005-07-14 Kristian Rietveld + + * gtk/gtktreeview.[ch] (gtk_tree_view_get_visible_range): new + function. (fixes #105252, suggestion from Mikael Hallendal). + 2005-07-13 Manish Singh * demos/gtk-demo/iconview_edit.c: remove unused variable. diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index fccb2e8405..c0ce3a1e10 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,8 @@ +2005-07-14 Kristian Rietveld + + * gtk/gtktreeview.[ch] (gtk_tree_view_get_visible_range): new + function. (fixes #105252, suggestion from Mikael Hallendal). + 2005-07-13 Manish Singh * demos/gtk-demo/iconview_edit.c: remove unused variable. diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c index d4bf62fe5e..13d974a39d 100644 --- a/gtk/gtktreeview.c +++ b/gtk/gtktreeview.c @@ -11768,6 +11768,53 @@ gtk_tree_view_tree_to_widget_coords (GtkTreeView *tree_view, *wy = ty - tree_view->priv->dy; } +/** + * gtk_tree_view_get_visible_range: + * @tree_view: A #GtkTreeView + * @start_path: Return location for start of region, or %NULL. + * @end_path: Return location for end of region, or %NULL. + * + * Sets @start_path and @end_path to be the first and last visible path. + * Note that there may be invisible paths in between. + * + * Returns: %TRUE, if valid paths were placed in @start_path and @end_path. + * + * Since: 2.8 + **/ +gboolean +gtk_tree_view_get_visible_range (GtkTreeView *tree_view, + GtkTreePath **start_path, + GtkTreePath **end_path) +{ + GtkRBTree *tree; + GtkRBNode *node; + + g_return_val_if_fail (GTK_IS_TREE_VIEW (tree_view), FALSE); + + if (start_path) + { + _gtk_rbtree_find_offset (tree_view->priv->tree, + TREE_WINDOW_Y_TO_RBTREE_Y (tree_view, 0), + &tree, &node); + *start_path = _gtk_tree_view_find_path (tree_view, tree, node); + } + + if (end_path) + { + gint y; + + if (tree_view->priv->height < tree_view->priv->vadjustment->page_size) + y = tree_view->priv->height - 1; + else + y = TREE_WINDOW_Y_TO_RBTREE_Y (tree_view, tree_view->priv->vadjustment->page_size) - 1; + + _gtk_rbtree_find_offset (tree_view->priv->tree, y, &tree, &node); + *end_path = _gtk_tree_view_find_path (tree_view, tree, node); + } + + return TRUE; +} + static void unset_reorderable (GtkTreeView *tree_view) { diff --git a/gtk/gtktreeview.h b/gtk/gtktreeview.h index 85e0d861b6..121810352a 100644 --- a/gtk/gtktreeview.h +++ b/gtk/gtktreeview.h @@ -262,6 +262,9 @@ void gtk_tree_view_tree_to_widget_coords (GtkTreeView gint ty, gint *wx, gint *wy); +gboolean gtk_tree_view_get_visible_range (GtkTreeView *tree_view, + GtkTreePath **start_path, + GtkTreePath **end_path); /* Drag-and-Drop support */ void gtk_tree_view_enable_model_drag_source (GtkTreeView *tree_view, -- 2.30.2